// 管理员信息的路由器文件
// 定义会员信息子路由模块

// 1. 导入Express框架
const express = require("express");
// 导入管理员信息操作的数据模型对象
const adminModel = require("../models/adminModel");
// 导入自定义实用代码库
const {md5, getDate, encode} = require("../utils/index");
// 2. 创建路由对象
const router = express.Router();
// 3. 配置路由
// 管理员列表接口
router.get("/", async (req, res) => {
    try {
        // 同步查询所有管理员信息
        const data = await adminModel.find({});
        res.json({code:0, msg:'获取成功', data:data});
    } catch (error) {
        console.log(error);
        res.json({code:1, msg:'获取信息失败'});
    }
});

// 添加管理员信息接口
router.post("/",async (req, res) => {
    // 获取要求添加的信息
    try {
        const data = req.body;
        // 对密码进行md5加密
        data.password = md5(data.password);
        // 获取当前日期信息
        data.regTime = getDate(); // 添加注册和更改时间信息
        data.loginTime = getDate();
        console.log(data);
        // 调用数据模型执行信息添加操作
        await adminModel.create(data)
        res.json({code:0, msg:'注册成功'});
    } catch (error) {
        console.log(error);
        res.json({code:1001, msg:'注册失败'});
    }
    
});

// 删除管理员信息接口
router.delete("/:id",async (req, res) => {
    try {
        // 从req中获取要删除信息的id号
        let id = req.params.id;
        await adminModel.deleteOne({_id: id})
        res.json({code:0, msg:'删除成功'});
    } catch (error) {
        console.log(error);
        res.json({code:1, msg:'删除失败'});
    } 
});

// 管理员登录接口
router.post("/login",async (req, res) => {
    try {
        //获取登录的账号密码信息
        let {adminName, password} = req.body;
        // 对密码信息md5加密
        password = md5(password);
        const admin = await adminModel.findOne({adminName: adminName, password:password});
        
        if(admin != null){
            // 删除密码字段 
            delete admin.password;
            // 生成token
            let token = encode({admin})
            res.json({code:0, msg:'登录成功', data: {token}});
        } else {
            res.json({code:2, msg:'登录失败！账号或密码错误'});
        }
    } catch (error) {
        res.json({code:1, msg:'数据库操作失败！'});
    }
    
});

// 管理员退出接口
router.get("/logout", (req, res) => {
    res.json({code:0, msg:'退出成功'});
});

//4. 导出路由（暴露）
module.exports = router;